package com.common.service;

import javax.annotation.Resource;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Service;

import com.common.dao.BaseDAO;


/**
 * 
 * 基于对对象的基本Service操作实现类
 * 
 * @param <T>
 * @author 徐龙
 * @date May 23, 2011
 */
@Service("baseService")
public class BaseServiceImpl<T> implements BaseService<T> {
	@Resource
	private BaseDAO<T> baseDAO;

	public void setBaseDAO(BaseDAO<T> baseDAO) {
		this.baseDAO = baseDAO;
	}

	/**
	 * 
	 * 保存对象信息
	 * 
	 * @param t
	 * @return
	 */
	public boolean save(T t, String id) {
		return baseDAO.save(t,id);
	}

	/**
	 * 
	 * 保存或修改对象信息
	 * 
	 * @param t
	 * @return
	 */
	public boolean saveOrUpdate(T t, String id) {
		System.out.println(t.getClass());
		return baseDAO.saveOrUpdate(t,id);
	}

	/**
	 * 
	 * 修改对象信息
	 * 
	 * @param t
	 * @return
	 */
	public boolean update(T t) {
		return baseDAO.update(t);
	}

	/**
	 * 
	 * 删除对象信息
	 * 
	 * @param t
	 * @return
	 */
	public boolean delete(T t) {
		return baseDAO.delete(t);
	}

	/**
	 * 
	 * 通过ID来删除对象
	 * 
	 * @param c
	 *            对象Class
	 * @param id
	 *            对象ID
	 * @return
	 */
	public boolean delete(Class<T> c, String id) {
		return baseDAO.delete(c, id);
	}

	/**
	 * 
	 * 通过对象ID得到对象信息
	 * 
	 * @param c
	 *            对象Class
	 * @param id
	 *            对象ID
	 * @return
	 */
	public T get(Class<T> c, String id) {
		return baseDAO.get(c, id);
	}

	/**
	 * 
	 * 得到此Class对象的条数
	 * 
	 * @param c
	 *            Class对象
	 * @return
	 */
	public Long getCount(Class<T> c) {
		return baseDAO.getCount(c);
	}

	/**
	 * 
	 * 
	 * @方法说明: 修改DR状态为1
	 * @param c
	 * @param id
	 * @return
	 * @作者:徐龙
	 * @日期:2011-8-25
	 */
	public boolean symbolDelete(Class<T> c, String id) {
		return baseDAO.symbolDelete(c, id);
	}



}
